package main

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-16 16:50:17
 * @Description: 345. 反转字符串中的元音字母
 给你一个字符串 s ，仅反转字符串中的所有元音字母，并返回结果字符串。

元音字母包括 'a'、'e'、'i'、'o'、'u'，且可能以大小写两种形式出现不止一次。
*/

func isAeiou(c byte) bool {
	return c == 'a' || c == 'A' ||
		c == 'e' || c == 'E' ||
		c == 'i' || c == 'I' ||
		c == 'o' || c == 'O' ||
		c == 'u' || c == 'U'
}

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-16 16:50:34
 * @Description:
 */
func reverseVowels(s string) string {
	leftIndex := 0
	rightIndex := len(s) - 1

	arr := make([]byte, len(s))
	for leftIndex <= rightIndex {
		if !isAeiou(s[leftIndex]) {
			arr[leftIndex] = s[leftIndex]
			leftIndex++
			continue

		}
		if !isAeiou(s[rightIndex]) {
			arr[rightIndex] = s[rightIndex]
			rightIndex--
			continue
		}
		arr[leftIndex] = s[rightIndex]
		arr[rightIndex] = s[leftIndex]
		leftIndex++
		rightIndex--
	}
	return string(arr)
}
